import http from '@/utils/request'
import { AxiosPromise } from 'axios'

// 秒杀活动相关接口定义
export interface SeckillActivityItem {
  seckillId: number // 平台秒杀活动id
  seckillName: string // 活动名称
  content: string // 活动内容
  signTime: string // 报名时间
  time: string // 起止时间
  shops: number // 商家数
  products: number // 商品数量
  state: number // 活动状态 0-报名未开始 1-报名进行中 2-活动待开始 3-活动进行中 4-活动已结束
  // 以下字段在详情接口中可能返回
  bondMoney?: number // 保证金金额
  endTime?: string // 活动结束时间
  ifAdd?: number // 优惠券是否叠加 1-是 0-否
  ifBond?: number // 是否需要保证金 1-是 0-否
  ifLimit?: number // 商品限购 1-不限购 2-限购
  limitNumber?: number // 限购几件/人
  remark?: string
  seckillMoney?: number // 直降多少元
  shopId?: number // 店铺id
  signEndTime?: string // 报名结束时间
  signStartTime?: string // 报名开始时间
  startTime?: string // 活动开始时间
  shopNumber?: number // 商家数
  productNumber?: number // 商品数量
}

export interface SeckillActivityListParams {
  seckillName?: string // 活动名称
  page: number // 页码
  pageSize: number // 每页数量
  state?: number // 活动状态 0-报名未开始 1-报名进行中 2-活动待开始 3-活动进行中 4-活动已结束
}

export interface SeckillActivityListResponse {
  list: SeckillActivityItem[]
  total: number
}

// 秒杀活动查询
export function getSeckillData(data: SeckillActivityListParams): AxiosPromise<{
  code: string
  data: SeckillActivityListResponse
}> {
  return http.post({
    url: '/seckill/getAll',
    data
  })
}

// 查询秒杀详情
export function getSeckillDetail(data: { seckillId: number }): AxiosPromise<{
  code: string
  data: SeckillActivityItem
}> {
  return http.post({
    url: '/seckill/getById',
    data
  })
}

// 添加秒杀活动
export function addSeckill(data: {
  bondMoney: number // 保证金金额
  endTime: string // 活动结束时间
  ifAdd: number // 优惠券是否叠加 1-是 0-否
  ifBond: number // 是否需要保证金 1-是 0-否
  ifLimit: number // 商品限购 1-不限购 2-限购
  limitNumber: number // 限购几件/人
  remark: string
  seckillMoney: number // 直降多少元
  seckillName: string // 活动名称
  signEndTime: string // 报名结束时间
  signStartTime: string // 报名开始时间
  startTime: string // 活动开始时间
}): AxiosPromise<{
  code: string
  data: any
}> {
  return http.post({
    url: '/seckill/save',
    data
  })
}

// 修改秒杀活动
export function editSeckill(data: {
  bondMoney: number // 保证金金额
  endTime: string // 活动结束时间
  ifAdd: number // 优惠券是否叠加 1-是 0-否
  ifBond: number // 是否需要保证金 1-是 0-否
  ifLimit: number // 商品限购 1-不限购 2-限购
  limitNumber: number // 限购几件/人
  remark: string
  seckillId: number // 平台秒杀活动id
  seckillMoney: number // 直降多少元
  seckillName: string // 活动名称
  shopId: number // 店铺id
  signEndTime: string // 报名结束时间
  signStartTime: string // 报名开始时间
  startTime: string // 活动开始时间
}): AxiosPromise<{
  code: string
  data: any
}> {
  return http.post({
    url: '/seckill/update',
    data
  })
}

// 删除秒杀活动
export function delSeckill(data: { seckillId: number }): AxiosPromise<{
  code: string
  data: any
}> {
  return http.post({
    url: '/seckill/delete',
    data
  })
}

// 停止秒杀活动
export function endSeckill(data: { seckillId: number }): AxiosPromise<{
  code: string
  data: any
}> {
  return http.post({
    url: '/seckill/stop',
    data
  })
}

// 秒杀活动数据查询
export function getSeckillChart(data: { seckillId: number }): AxiosPromise<{
  code: string
  data: any
}> {
  return http.post({
    url: '/seckill/getData',
    data
  })
}

// 参与店铺查询
export function getSeckillShops(data: {
  page: number
  pageSize: number
  seckillId: number // 平台秒杀活动id
  shopCode?: string // 店铺编码
  shopName?: string // 店铺名称
  state?: number // 审核状态 0-待审核 1-报名成功 2-报名失败 3-报名进行中(未支付)
}): AxiosPromise<{
  code: string
  data: any
}> {
  return http.post({
    url: '/seckill/getShops',
    data
  })
}

// 查看商品
export function getSeckillProducts(data: {
  page: number
  pageSize: number
  signId: number // 报名id
}): AxiosPromise<{
  code: string
  data: any
}> {
  return http.post({
    url: '/seckill/getProducts',
    data
  })
}

// 导出数据
export function exportSeckillData(data: any = {}): AxiosPromise<Blob> {
  return http.post({
    url: '/seckill/excel_shop_detail',
    data,
    responseType: 'blob'
  })
}